package furns.entity;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Set;

//用来对购物车进行操作
public class Cart {
    //将CartItem的数据，使用HashMap来保存
    private HashMap<Integer, CartItem> items = new HashMap<>();

    public HashMap<Integer, CartItem> getItems() {
        return items;
    }

    public boolean isEmpty(){
        return items.size()  == 0;
    }

    //计算一共有多少商品，在前端购物车显示
    public int getTotalCount() {
        int totalcount = 0;
        Set<Integer> keys = items.keySet();
        for (Integer id : keys) {
            totalcount += items.get(id).getCount();
        }
        return totalcount;
    }

    //计算购物车所有商品的价格
    public BigDecimal getTotalPrice() {
        BigDecimal totalPrice = new BigDecimal(0);
        Set<Integer> keys = items.keySet();
        for (Integer key : keys) {
            //需要重新赋值，才可以进行累加
            totalPrice = totalPrice.add(items.get(key).getTotalPrice());
        }
        return totalPrice;
    }

    //添加家居到购物车
    public void addItem(CartItem cartItem) {
        CartItem cart = items.get(cartItem.getId());
        if (cart == null) {
            items.put(cartItem.getId(), cartItem);
        } else {
            cart.setCount(cart.getCount() + cartItem.getCount());
            //修改总价格
            BigDecimal multiply = cart.getPrice().multiply(new BigDecimal(cart.getCount()));
            cart.setTotalPrice(multiply);
        }
    }

    //修改购物车
    public void updateItem(int id, int count) {
        CartItem cartItem = items.get(id);
        if (cartItem != null) {
            //更新数量
            cartItem.setCount(count);
            //更新价格
            BigDecimal multiply = cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount()));
            cartItem.setTotalPrice(multiply);
        }
    }

    //根据id，删除购物车
    public void delItem(int id){
            items.remove(id);
    }
    //清除购物车
    public void clearItem(){
        items.clear();
    }

    @Override
    public String toString() {
        return "Cart{" +
                "items=" + items +
                '}';
    }
}
